import axios from 'axios'

const request = axios.create({
  baseURL: 'http://localhost:8080',
  timeout: 5000
})

// 请求拦截器（添加token，排除登录和注册请求）
request.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  console.log(token)

  // 定义不需要携带token的接口路径模式（使用正则表达式）
  const noTokenPatterns = [
    /^\/user\/login(\/.*)?$/,   // 匹配 /user/login、/user/login/、/user/login/abc
    /^\/user\/register(\/.*)?$/ // 匹配 /user/register、/user/register/、/user/register/abc
  ];

  // 判断当前请求是否需要排除 - 使用正则的 test() 方法
  const isExcluded = noTokenPatterns.some(pattern =>
    pattern.test(config.url)  // 这里改为：用正则模式去测试URL字符串
  )

  // 如果不是排除的接口且有token，则添加token
  if (!isExcluded && token) {
    config.headers.token = token
  }

  return config
}, error => {
  return Promise.reject(error)
})

// 响应拦截器（处理错误）
request.interceptors.response.use(
  response => response.data,
  error => {
    alert(error.response?.data?.message || '请求失败')
    return Promise.reject(error)
  }
)

export default request